'use strict';

const db = uniCloud.database();
const collection = db.collection('users');
// 引入crypto模块
const CryptoJS = require('crypto-js');


exports.main = async (event, context) => {

	const {
		username,
		password,
		mail
	} = event;

	// 检查用户名是否已存在
	const user = await collection.where({ username }).get();

	if (user.data.length > 0) {
		return {
			code: 1,
			message: '用户名已存在'
		};
	}

	// 创建新的用户，为其生成新的唯一家庭id
	const familyId = new Date().getTime().toString(36);

	// 使用crypto对密码进行加密
	// 设置密钥
	let key = 'asdqweasdqwe123asdf1234dfs123'; // 密钥用于加密和解密
	// 设置加密算法
	let encrypted = CryptoJS.AES.encrypt(password, key);
	// 将加密后的密码存储到数据库中，需解决循环引用的问题
	let encryptedString = encrypted.toString();

	const res = await collection.add({
		username,
		encryptedString,
		mail,
		familyId
	});

	//返回数据给客户端
	return {
		code: 0,
		data: res,
		message: '注册成功'
	};
};